﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using CommomFunctions;
using System.Windows.Media;
using System.Windows.Controls;

namespace Filas
{
    public enum ButtonClicked
    {
        Create,
        Destroy,
        Insert,
        Remove
    }

    public class Buttons : CommomFunctions.Buttons
    {
        public static void btnCreate_Click(Button[] btns)
        {
            habilitaBotoes(btns);
            btns[0].IsEnabled = false;

            ControlVariables.initializeNullImages();
            ControlVariables.writeToTrace(ButtonClicked.Create);
        }

        public static void btnDestroy_Click(Button[] btns)
        {
            desabilitaBotoes(btns);
            btns[0].IsEnabled = true;

            ControlVariables.setAllImagesHidden();
            ControlVariables.setAllHidden();
            ControlVariables.resetCounters();
            ControlVariables.updateQueue();
            ControlVariables.writeToTrace(ButtonClicked.Destroy);
        }

        public static void btnInsert_Click()
        {
            if (ControlVariables.testOverflow())
                return;

            ControlVariables.updateImagesVisibility();
            ControlVariables.insertElement();
            ControlVariables.updateImageMargin();
            ControlVariables.writeToTrace(ButtonClicked.Insert);
        }

        public static void btnRemove_Click(Button[] btns)
        {
            //tem este teste aqui pra evitar dar erro se a pessoa clicar remove antes do add
            //ou remover mais do q foi inserido
            if (ControlVariables.testUnderflow())
                return;

            ControlVariables.setAllHidden();
            ControlVariables.updateCounters();
            ControlVariables.writeToTrace(ButtonClicked.Remove);

            ControlVariables.animaRemove();
        }

        public static void updateButtons(Button[] btns, ButtonClicked[] inds, bool p)
        {
            for (int i = 0; i < inds.Count(); i++)
            {
                btns[(int)inds[i]].IsEnabled = p;
            }
        }
        
    }
}
